package com.bigdata.hdfs;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.log4j.Logger;

import com.util.StringUtils;

import sun.tools.tree.ThisExpression;

public class Hdfs {
	static Logger logger = Logger.getLogger(ThisExpression.class);

	static String HDFSUri = "hdfs://bogon:50070/";

	/**
	 * 获取文件系统
	 * 
	 * @return FileSystem
	 */
	public static FileSystem getFileSystem() {
		// 读取配置文件
		Configuration conf = new Configuration();
		// 文件系统
		FileSystem fs = null;
		try {
			if (StringUtils.isBlank(HDFSUri)) {
				// 返回默认文件系统 如果在 Hadoop集群下运行，使用此种方法可直接获取默认文件系统
				fs = FileSystem.get(conf);
			} else {
				// 返回指定的文件系统,如果在本地测试，需要使用此种方法获取文件系统
				URI uri = new URI(HDFSUri.trim());
				fs = FileSystem.get(uri, conf);
			}
		} catch (URISyntaxException | IOException e) {
			e.printStackTrace();
			logger.error("", e);
		}
		return fs;
	}

	public static void main(String[] args) throws IllegalArgumentException, IOException {
		System.setProperty("HADOOP_USER_NAME", "hadoop");
		System.setProperty("hadoop.home.dir", "/home/hadoop/hadoop");
		FileSystem fs = getFileSystem();
		fs.mkdirs(new Path("/test"));
	}
}
